{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Testing the signal quality with Alphalens"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Imports & Settings"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-22T16:09:07.196881Z",
     "start_time": "2020-06-22T16:09:07.194674Z"
    }
   },
   "outputs": [],
   "source": [
    "import warnings\n",
    "warnings.filterwarnings('ignore')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-22T16:09:08.296229Z",
     "start_time": "2020-06-22T16:09:07.516211Z"
    },
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "\n",
    "from pathlib import Path\n",
    "import pandas as pd\n",
    "import seaborn as sns\n",
    "\n",
    "from alphalens.tears import (create_summary_tear_sheet,\n",
    "                             create_full_tear_sheet)\n",
    "\n",
    "from alphalens.utils import get_clean_factor_and_forward_returns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-22T16:09:08.300269Z",
     "start_time": "2020-06-22T16:09:08.297421Z"
    },
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "sns.set_style('whitegrid')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-22T16:09:08.394173Z",
     "start_time": "2020-06-22T16:09:08.392130Z"
    },
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "idx = pd.IndexSlice"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-22T16:09:08.716351Z",
     "start_time": "2020-06-22T16:09:08.714083Z"
    }
   },
   "outputs": [],
   "source": [
    "results_path = Path('results', 'return_predictions')\n",
    "if not results_path.exists():\n",
    "    results_path.mkdir(parents=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Evaluating the Cross-Validation Results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-22T16:09:09.564198Z",
     "start_time": "2020-06-22T16:09:09.562182Z"
    }
   },
   "outputs": [],
   "source": [
    "lookahead = 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-22T16:09:09.898764Z",
     "start_time": "2020-06-22T16:09:09.896829Z"
    }
   },
   "outputs": [],
   "source": [
    "cv_store = Path(results_path / 'parameter_tuning.h5')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Get AlphaLens Input"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-22T16:10:19.668426Z",
     "start_time": "2020-06-22T16:10:19.666534Z"
    }
   },
   "outputs": [],
   "source": [
    "DATA_DIR = Path('..', 'data')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-22T16:10:19.870492Z",
     "start_time": "2020-06-22T16:10:19.866056Z"
    },
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "def get_trade_prices(tickers):\n",
    "    store = DATA_DIR / 'assets.h5'\n",
    "    prices = pd.read_hdf(store, 'stooq/jp/tse/stocks/prices')\n",
    "    return (prices.loc[idx[tickers, '2014': '2019'], 'open']\n",
    "            .unstack('ticker')\n",
    "            .sort_index()\n",
    "            .shift(-1)\n",
    "            .dropna()\n",
    "            .tz_localize('UTC'))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Using next available prices."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-22T16:10:59.880161Z",
     "start_time": "2020-06-22T16:10:20.683952Z"
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "DatetimeIndex: 1464 entries, 2014-01-06 00:00:00+00:00 to 2019-12-27 00:00:00+00:00\n",
      "Columns: 941 entries, 1332.JP to 9990.JP\n",
      "dtypes: float64(941)\n",
      "memory usage: 10.5 MB\n"
     ]
    }
   ],
   "source": [
    "test_tickers = best_predictions.index.get_level_values('ticker').unique()\n",
    "trade_prices = get_trade_prices(test_tickers)\n",
    "trade_prices.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-22T16:09:55.151763Z",
     "start_time": "2020-06-22T16:09:54.860891Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "MultiIndex: 948528 entries, ('1332.JP', Timestamp('2019-11-29 00:00:00')) to ('9990.JP', Timestamp('2018-01-05 00:00:00'))\n",
      "Data columns (total 10 columns):\n",
      " #   Column  Non-Null Count   Dtype  \n",
      "---  ------  --------------   -----  \n",
      " 0   0       948528 non-null  float64\n",
      " 1   1       948528 non-null  float64\n",
      " 2   2       948528 non-null  float64\n",
      " 3   3       948528 non-null  float64\n",
      " 4   4       948528 non-null  float64\n",
      " 5   5       948528 non-null  float64\n",
      " 6   6       948528 non-null  float64\n",
      " 7   7       948528 non-null  float64\n",
      " 8   8       948528 non-null  float64\n",
      " 9   9       948528 non-null  float64\n",
      "dtypes: float64(10)\n",
      "memory usage: 76.1+ MB\n"
     ]
    }
   ],
   "source": [
    "best_predictions= pd.read_hdf(results_path / 'predictions.h5', f'train/{lookahead:02}')\n",
    "best_predictions.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-22T16:10:02.028048Z",
     "start_time": "2020-06-22T16:10:01.722647Z"
    }
   },
   "outputs": [],
   "source": [
    "factor = (best_predictions\n",
    "          .iloc[:, :3]\n",
    "          .mean(1)\n",
    "          .tz_localize('UTC', level='date')\n",
    "          .swaplevel()\n",
    "          .dropna()\n",
    "          .reset_index()\n",
    "          .drop_duplicates()\n",
    "          .set_index(['date', 'ticker']))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-22T16:11:05.400052Z",
     "start_time": "2020-06-22T16:10:59.881662Z"
    },
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Dropped 4.2% entries from factor data: 4.2% in forward returns computation and 0.0% in binning phase (set max_loss=0 to see potentially suppressed Exceptions).\n",
      "max_loss is 35.0%, not exceeded: OK!\n",
      "<class 'pandas.core.frame.DataFrame'>\n",
      "MultiIndex: 454503 entries, (Timestamp('2017-12-05 00:00:00+0000', tz='UTC'), '1332.JP') to (Timestamp('2019-11-28 00:00:00+0000', tz='UTC'), '9990.JP')\n",
      "Data columns (total 6 columns):\n",
      " #   Column           Non-Null Count   Dtype  \n",
      "---  ------           --------------   -----  \n",
      " 0   1D               454503 non-null  float64\n",
      " 1   5D               454503 non-null  float64\n",
      " 2   10D              454503 non-null  float64\n",
      " 3   21D              454503 non-null  float64\n",
      " 4   factor           454503 non-null  float64\n",
      " 5   factor_quantile  454503 non-null  int64  \n",
      "dtypes: float64(5), int64(1)\n",
      "memory usage: 22.6+ MB\n"
     ]
    }
   ],
   "source": [
    "factor_data = get_clean_factor_and_forward_returns(factor=factor,\n",
    "                                                   prices=trade_prices,\n",
    "                                                   quantiles=5,\n",
    "                                                   periods=(1, 5, 10, 21))\n",
    "factor_data.sort_index().info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Summary Tearsheet"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-22T16:11:15.498829Z",
     "start_time": "2020-06-22T16:11:05.401363Z"
    },
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Quantiles Statistics\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>min</th>\n",
       "      <th>max</th>\n",
       "      <th>mean</th>\n",
       "      <th>std</th>\n",
       "      <th>count</th>\n",
       "      <th>count %</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>factor_quantile</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-0.017367</td>\n",
       "      <td>0.012132</td>\n",
       "      <td>-0.000227</td>\n",
       "      <td>0.002643</td>\n",
       "      <td>91727</td>\n",
       "      <td>20.181825</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-0.014231</td>\n",
       "      <td>0.012997</td>\n",
       "      <td>0.000088</td>\n",
       "      <td>0.002403</td>\n",
       "      <td>90718</td>\n",
       "      <td>19.959824</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.013908</td>\n",
       "      <td>0.013299</td>\n",
       "      <td>0.000283</td>\n",
       "      <td>0.002350</td>\n",
       "      <td>90905</td>\n",
       "      <td>20.000968</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-0.013452</td>\n",
       "      <td>0.015523</td>\n",
       "      <td>0.000569</td>\n",
       "      <td>0.002428</td>\n",
       "      <td>90535</td>\n",
       "      <td>19.919560</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>-0.013128</td>\n",
       "      <td>0.024762</td>\n",
       "      <td>0.001552</td>\n",
       "      <td>0.003033</td>\n",
       "      <td>90618</td>\n",
       "      <td>19.937822</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                      min       max      mean       std  count    count %\n",
       "factor_quantile                                                          \n",
       "1               -0.017367  0.012132 -0.000227  0.002643  91727  20.181825\n",
       "2               -0.014231  0.012997  0.000088  0.002403  90718  19.959824\n",
       "3               -0.013908  0.013299  0.000283  0.002350  90905  20.000968\n",
       "4               -0.013452  0.015523  0.000569  0.002428  90535  19.919560\n",
       "5               -0.013128  0.024762  0.001552  0.003033  90618  19.937822"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Returns Analysis\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>1D</th>\n",
       "      <th>5D</th>\n",
       "      <th>10D</th>\n",
       "      <th>21D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Ann. alpha</th>\n",
       "      <td>0.011</td>\n",
       "      <td>0.035</td>\n",
       "      <td>0.041</td>\n",
       "      <td>0.026</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>beta</th>\n",
       "      <td>0.116</td>\n",
       "      <td>0.095</td>\n",
       "      <td>0.076</td>\n",
       "      <td>0.058</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mean Period Wise Return Top Quantile (bps)</th>\n",
       "      <td>1.094</td>\n",
       "      <td>1.171</td>\n",
       "      <td>1.383</td>\n",
       "      <td>1.100</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mean Period Wise Return Bottom Quantile (bps)</th>\n",
       "      <td>-1.027</td>\n",
       "      <td>-1.708</td>\n",
       "      <td>-1.594</td>\n",
       "      <td>-1.073</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mean Period Wise Spread (bps)</th>\n",
       "      <td>2.120</td>\n",
       "      <td>2.864</td>\n",
       "      <td>2.963</td>\n",
       "      <td>2.158</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                  1D     5D    10D    21D\n",
       "Ann. alpha                                     0.011  0.035  0.041  0.026\n",
       "beta                                           0.116  0.095  0.076  0.058\n",
       "Mean Period Wise Return Top Quantile (bps)     1.094  1.171  1.383  1.100\n",
       "Mean Period Wise Return Bottom Quantile (bps) -1.027 -1.708 -1.594 -1.073\n",
       "Mean Period Wise Spread (bps)                  2.120  2.864  2.963  2.158"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Information Analysis\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>1D</th>\n",
       "      <th>5D</th>\n",
       "      <th>10D</th>\n",
       "      <th>21D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>IC Mean</th>\n",
       "      <td>0.004</td>\n",
       "      <td>0.014</td>\n",
       "      <td>0.020</td>\n",
       "      <td>0.015</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>IC Std.</th>\n",
       "      <td>0.125</td>\n",
       "      <td>0.130</td>\n",
       "      <td>0.128</td>\n",
       "      <td>0.126</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Risk-Adjusted IC</th>\n",
       "      <td>0.034</td>\n",
       "      <td>0.107</td>\n",
       "      <td>0.153</td>\n",
       "      <td>0.121</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>t-stat(IC)</th>\n",
       "      <td>0.737</td>\n",
       "      <td>2.344</td>\n",
       "      <td>3.362</td>\n",
       "      <td>2.657</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>p-value(IC)</th>\n",
       "      <td>0.461</td>\n",
       "      <td>0.019</td>\n",
       "      <td>0.001</td>\n",
       "      <td>0.008</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>IC Skew</th>\n",
       "      <td>0.001</td>\n",
       "      <td>0.157</td>\n",
       "      <td>0.395</td>\n",
       "      <td>0.620</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>IC Kurtosis</th>\n",
       "      <td>0.920</td>\n",
       "      <td>0.047</td>\n",
       "      <td>0.349</td>\n",
       "      <td>0.568</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                     1D     5D    10D    21D\n",
       "IC Mean           0.004  0.014  0.020  0.015\n",
       "IC Std.           0.125  0.130  0.128  0.126\n",
       "Risk-Adjusted IC  0.034  0.107  0.153  0.121\n",
       "t-stat(IC)        0.737  2.344  3.362  2.657\n",
       "p-value(IC)       0.461  0.019  0.001  0.008\n",
       "IC Skew           0.001  0.157  0.395  0.620\n",
       "IC Kurtosis       0.920  0.047  0.349  0.568"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Turnover Analysis\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>1D</th>\n",
       "      <th>5D</th>\n",
       "      <th>10D</th>\n",
       "      <th>21D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Quantile 1 Mean Turnover</th>\n",
       "      <td>0.626</td>\n",
       "      <td>0.700</td>\n",
       "      <td>0.752</td>\n",
       "      <td>0.796</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Quantile 2 Mean Turnover</th>\n",
       "      <td>0.712</td>\n",
       "      <td>0.751</td>\n",
       "      <td>0.773</td>\n",
       "      <td>0.788</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Quantile 3 Mean Turnover</th>\n",
       "      <td>0.731</td>\n",
       "      <td>0.769</td>\n",
       "      <td>0.783</td>\n",
       "      <td>0.792</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Quantile 4 Mean Turnover</th>\n",
       "      <td>0.711</td>\n",
       "      <td>0.763</td>\n",
       "      <td>0.786</td>\n",
       "      <td>0.801</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Quantile 5 Mean Turnover</th>\n",
       "      <td>0.526</td>\n",
       "      <td>0.620</td>\n",
       "      <td>0.677</td>\n",
       "      <td>0.745</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                              1D     5D    10D    21D\n",
       "Quantile 1 Mean Turnover   0.626  0.700  0.752  0.796\n",
       "Quantile 2 Mean Turnover   0.712  0.751  0.773  0.788\n",
       "Quantile 3 Mean Turnover   0.731  0.769  0.783  0.792\n",
       "Quantile 4 Mean Turnover   0.711  0.763  0.786  0.801\n",
       "Quantile 5 Mean Turnover   0.526  0.620  0.677  0.745"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>1D</th>\n",
       "      <th>5D</th>\n",
       "      <th>10D</th>\n",
       "      <th>21D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Mean Factor Rank Autocorrelation</th>\n",
       "      <td>0.392</td>\n",
       "      <td>0.26</td>\n",
       "      <td>0.159</td>\n",
       "      <td>0.041</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                     1D    5D    10D    21D\n",
       "Mean Factor Rank Autocorrelation  0.392  0.26  0.159  0.041"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1008x7056 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "create_summary_tear_sheet(factor_data)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Evaluating the Out-of-sample predictions"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Prepare Factor Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-22T16:11:23.918002Z",
     "start_time": "2020-06-22T16:11:23.823252Z"
    },
    "scrolled": false
   },
   "outputs": [],
   "source": [
    "t = 1\n",
    "predictions = pd.read_hdf(results_path / 'predictions.h5',\n",
    "                          f'test/{t:02}').drop('y_test', axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-22T16:11:24.607122Z",
     "start_time": "2020-06-22T16:11:24.588514Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "MultiIndex: 474264 entries, ('1332.JP', Timestamp('2019-11-29 00:00:00')) to ('9990.JP', Timestamp('2018-01-05 00:00:00'))\n",
      "Data columns (total 10 columns):\n",
      " #   Column  Non-Null Count   Dtype  \n",
      "---  ------  --------------   -----  \n",
      " 0   0       474264 non-null  float64\n",
      " 1   1       474264 non-null  float64\n",
      " 2   2       474264 non-null  float64\n",
      " 3   3       474264 non-null  float64\n",
      " 4   4       474264 non-null  float64\n",
      " 5   5       474264 non-null  float64\n",
      " 6   6       474264 non-null  float64\n",
      " 7   7       474264 non-null  float64\n",
      " 8   8       474264 non-null  float64\n",
      " 9   9       474264 non-null  float64\n",
      "dtypes: float64(10)\n",
      "memory usage: 38.1+ MB\n"
     ]
    }
   ],
   "source": [
    "predictions.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-22T16:11:34.537078Z",
     "start_time": "2020-06-22T16:11:34.404466Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "date                       ticker \n",
       "2017-12-05 00:00:00+00:00  1332.JP    0.000141\n",
       "2017-12-06 00:00:00+00:00  1332.JP    0.003057\n",
       "2017-12-07 00:00:00+00:00  1332.JP    0.000622\n",
       "2017-12-08 00:00:00+00:00  1332.JP    0.000652\n",
       "2017-12-11 00:00:00+00:00  1332.JP    0.002804\n",
       "dtype: float64"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "factor = (predictions.iloc[:, :10]\n",
    "                   .mean(1)\n",
    "                   .sort_index().tz_localize('UTC', level='date').swaplevel().dropna())\n",
    "factor.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Select next available trade prices"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Using next available prices."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-22T16:12:12.780057Z",
     "start_time": "2020-06-22T16:11:35.889708Z"
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "DatetimeIndex: 1464 entries, 2014-01-06 00:00:00+00:00 to 2019-12-27 00:00:00+00:00\n",
      "Columns: 941 entries, 1332.JP to 9990.JP\n",
      "dtypes: float64(941)\n",
      "memory usage: 10.5 MB\n"
     ]
    }
   ],
   "source": [
    "tickers = factor.index.get_level_values('ticker').unique()\n",
    "trade_prices = get_trade_prices(tickers)\n",
    "trade_prices.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Get AlphaLens Inputs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-22T16:12:18.137864Z",
     "start_time": "2020-06-22T16:12:12.781624Z"
    },
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Dropped 4.2% entries from factor data: 4.2% in forward returns computation and 0.0% in binning phase (set max_loss=0 to see potentially suppressed Exceptions).\n",
      "max_loss is 35.0%, not exceeded: OK!\n",
      "<class 'pandas.core.frame.DataFrame'>\n",
      "MultiIndex: 454503 entries, (Timestamp('2017-12-05 00:00:00+0000', tz='UTC'), '1332.JP') to (Timestamp('2019-11-28 00:00:00+0000', tz='UTC'), '9990.JP')\n",
      "Data columns (total 6 columns):\n",
      " #   Column           Non-Null Count   Dtype  \n",
      "---  ------           --------------   -----  \n",
      " 0   1D               454503 non-null  float64\n",
      " 1   5D               454503 non-null  float64\n",
      " 2   10D              454503 non-null  float64\n",
      " 3   21D              454503 non-null  float64\n",
      " 4   factor           454503 non-null  float64\n",
      " 5   factor_quantile  454503 non-null  int64  \n",
      "dtypes: float64(5), int64(1)\n",
      "memory usage: 22.6+ MB\n"
     ]
    }
   ],
   "source": [
    "factor_data = get_clean_factor_and_forward_returns(factor=factor,\n",
    "                                                   prices=trade_prices,\n",
    "                                                   quantiles=5,\n",
    "                                                   periods=(1, 5, 10, 21))\n",
    "factor_data.sort_index().info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Summary Tearsheet"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-22T16:12:27.759761Z",
     "start_time": "2020-06-22T16:12:18.139232Z"
    },
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Quantiles Statistics\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>min</th>\n",
       "      <th>max</th>\n",
       "      <th>mean</th>\n",
       "      <th>std</th>\n",
       "      <th>count</th>\n",
       "      <th>count %</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>factor_quantile</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-0.029615</td>\n",
       "      <td>0.011705</td>\n",
       "      <td>-0.003775</td>\n",
       "      <td>0.005519</td>\n",
       "      <td>91290</td>\n",
       "      <td>20.085676</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-0.027110</td>\n",
       "      <td>0.012049</td>\n",
       "      <td>-0.002620</td>\n",
       "      <td>0.005339</td>\n",
       "      <td>90801</td>\n",
       "      <td>19.978086</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.026902</td>\n",
       "      <td>0.019264</td>\n",
       "      <td>-0.001896</td>\n",
       "      <td>0.005392</td>\n",
       "      <td>90805</td>\n",
       "      <td>19.978966</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-0.026794</td>\n",
       "      <td>0.020319</td>\n",
       "      <td>-0.001151</td>\n",
       "      <td>0.005475</td>\n",
       "      <td>90808</td>\n",
       "      <td>19.979626</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>-0.026460</td>\n",
       "      <td>0.024469</td>\n",
       "      <td>0.000147</td>\n",
       "      <td>0.005740</td>\n",
       "      <td>90799</td>\n",
       "      <td>19.977646</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                      min       max      mean       std  count    count %\n",
       "factor_quantile                                                          \n",
       "1               -0.029615  0.011705 -0.003775  0.005519  91290  20.085676\n",
       "2               -0.027110  0.012049 -0.002620  0.005339  90801  19.978086\n",
       "3               -0.026902  0.019264 -0.001896  0.005392  90805  19.978966\n",
       "4               -0.026794  0.020319 -0.001151  0.005475  90808  19.979626\n",
       "5               -0.026460  0.024469  0.000147  0.005740  90799  19.977646"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Returns Analysis\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>1D</th>\n",
       "      <th>5D</th>\n",
       "      <th>10D</th>\n",
       "      <th>21D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Ann. alpha</th>\n",
       "      <td>0.049</td>\n",
       "      <td>0.005</td>\n",
       "      <td>0.003</td>\n",
       "      <td>0.016</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>beta</th>\n",
       "      <td>0.022</td>\n",
       "      <td>0.019</td>\n",
       "      <td>0.014</td>\n",
       "      <td>0.016</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mean Period Wise Return Top Quantile (bps)</th>\n",
       "      <td>2.918</td>\n",
       "      <td>0.569</td>\n",
       "      <td>0.256</td>\n",
       "      <td>0.915</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mean Period Wise Return Bottom Quantile (bps)</th>\n",
       "      <td>-2.033</td>\n",
       "      <td>-0.118</td>\n",
       "      <td>-0.475</td>\n",
       "      <td>-0.917</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mean Period Wise Spread (bps)</th>\n",
       "      <td>4.951</td>\n",
       "      <td>0.688</td>\n",
       "      <td>0.736</td>\n",
       "      <td>1.834</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                  1D     5D    10D    21D\n",
       "Ann. alpha                                     0.049  0.005  0.003  0.016\n",
       "beta                                           0.022  0.019  0.014  0.016\n",
       "Mean Period Wise Return Top Quantile (bps)     2.918  0.569  0.256  0.915\n",
       "Mean Period Wise Return Bottom Quantile (bps) -2.033 -0.118 -0.475 -0.917\n",
       "Mean Period Wise Spread (bps)                  4.951  0.688  0.736  1.834"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Information Analysis\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>1D</th>\n",
       "      <th>5D</th>\n",
       "      <th>10D</th>\n",
       "      <th>21D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>IC Mean</th>\n",
       "      <td>0.009</td>\n",
       "      <td>0.002</td>\n",
       "      <td>0.005</td>\n",
       "      <td>0.016</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>IC Std.</th>\n",
       "      <td>0.109</td>\n",
       "      <td>0.113</td>\n",
       "      <td>0.110</td>\n",
       "      <td>0.106</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Risk-Adjusted IC</th>\n",
       "      <td>0.084</td>\n",
       "      <td>0.021</td>\n",
       "      <td>0.041</td>\n",
       "      <td>0.152</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>t-stat(IC)</th>\n",
       "      <td>1.848</td>\n",
       "      <td>0.468</td>\n",
       "      <td>0.909</td>\n",
       "      <td>3.351</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>p-value(IC)</th>\n",
       "      <td>0.065</td>\n",
       "      <td>0.640</td>\n",
       "      <td>0.364</td>\n",
       "      <td>0.001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>IC Skew</th>\n",
       "      <td>0.013</td>\n",
       "      <td>0.143</td>\n",
       "      <td>0.180</td>\n",
       "      <td>0.355</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>IC Kurtosis</th>\n",
       "      <td>1.002</td>\n",
       "      <td>0.874</td>\n",
       "      <td>0.740</td>\n",
       "      <td>0.550</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                     1D     5D    10D    21D\n",
       "IC Mean           0.009  0.002  0.005  0.016\n",
       "IC Std.           0.109  0.113  0.110  0.106\n",
       "Risk-Adjusted IC  0.084  0.021  0.041  0.152\n",
       "t-stat(IC)        1.848  0.468  0.909  3.351\n",
       "p-value(IC)       0.065  0.640  0.364  0.001\n",
       "IC Skew           0.013  0.143  0.180  0.355\n",
       "IC Kurtosis       1.002  0.874  0.740  0.550"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Turnover Analysis\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>1D</th>\n",
       "      <th>5D</th>\n",
       "      <th>10D</th>\n",
       "      <th>21D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Quantile 1 Mean Turnover</th>\n",
       "      <td>0.714</td>\n",
       "      <td>0.745</td>\n",
       "      <td>0.779</td>\n",
       "      <td>0.798</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Quantile 2 Mean Turnover</th>\n",
       "      <td>0.777</td>\n",
       "      <td>0.783</td>\n",
       "      <td>0.794</td>\n",
       "      <td>0.800</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Quantile 3 Mean Turnover</th>\n",
       "      <td>0.780</td>\n",
       "      <td>0.790</td>\n",
       "      <td>0.795</td>\n",
       "      <td>0.798</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Quantile 4 Mean Turnover</th>\n",
       "      <td>0.775</td>\n",
       "      <td>0.784</td>\n",
       "      <td>0.796</td>\n",
       "      <td>0.799</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Quantile 5 Mean Turnover</th>\n",
       "      <td>0.708</td>\n",
       "      <td>0.737</td>\n",
       "      <td>0.778</td>\n",
       "      <td>0.798</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                              1D     5D    10D    21D\n",
       "Quantile 1 Mean Turnover   0.714  0.745  0.779  0.798\n",
       "Quantile 2 Mean Turnover   0.777  0.783  0.794  0.800\n",
       "Quantile 3 Mean Turnover   0.780  0.790  0.795  0.798\n",
       "Quantile 4 Mean Turnover   0.775  0.784  0.796  0.799\n",
       "Quantile 5 Mean Turnover   0.708  0.737  0.778  0.798"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>1D</th>\n",
       "      <th>5D</th>\n",
       "      <th>10D</th>\n",
       "      <th>21D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Mean Factor Rank Autocorrelation</th>\n",
       "      <td>0.151</td>\n",
       "      <td>0.11</td>\n",
       "      <td>0.032</td>\n",
       "      <td>-0.006</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                     1D    5D    10D    21D\n",
       "Mean Factor Rank Autocorrelation  0.151  0.11  0.032 -0.006"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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o7bfzz//jC+++KLM977q0aMH+vXrp/piDuQvJd25c2ecPXtWbVlnAFi0aBEmTZqkWvq74DV6vSehYCjZ68emp6eXa/VFoRw6dAgA1BJZsViMvn374sKFCzhz5gzatm2r0RA2Tb148QJSqVStzrS0NOzfvx/A/3rgPvzwQygUCuzdu1ft+F27duHIkSNqQ15ff74LPh/Wrl2rdtyJEydw7949dOnSpdQxi0QizJs3Dw8fPsSMGTNUPbMpKSn473//Cx8fH/j7++PmzZsICAhQXVtBjLdu3VKr780l/Qvmpb333nuqstzcXPz6669qz0lpvPm8vE379u1hbGyMDRs2qM33fPz4MSZOnIjQ0FCt9HYS0f+wp4mIysXKygpubm64cOECPDw81CZLv87Q0BDffPMNpk6disGDB2Po0KEwNjbG3r178fDhQ4SGhkIikcDV1RUWFhb47rvv8PDhQ1SvXh1RUVE4fPgwjI2N1ZKWiqJp7KVRsHT10KFD4efnB3Nzc0REROCvv/7CnDlzVJPzZ82ahWHDhsHb2xvDhg1DVlYWNm/eXOzzXBR3d3fs2bMHderUKXJ+lIeHBw4dOgR3d/dCNwZ9XcECGT///DMmTZqETp06ITs7G7t374apqSmGDBkCIH+S/7FjxzB58mT4+vqiUaNGuHLlCg4cOIDOnTujc+fOpXquXhcUFITz589j9erV6N27N+rVq4fAwEBERUVh2LBhGDZsGN577z2cOXMGp0+fho+PDxo1agQAqucsIiICSqUSH330EXr06IEFCxZg/vz5SEpKgpGREfbs2aPqragId+7cwYEDB1SPs7Ozcfz4cZw/fx79+vUrtGhGv379sHnzZkRGRmLx4sWCxtK5c2esX78eX3zxBTp27IinT59i3759qqS94P3XrVs3dOjQAYsWLcLdu3fh4uKCa9euITw8HJMmTVKt7CiVSnH58mXs2bMHHTt2xIcffoju3btj69atePz4MTw8PHD//n3s2rUL9vb2hRaI0NSHH36Ib7/9FgsWLECfPn0wcOBA2NnZoWfPnoiPj8f169dhbGysNs/OwcEBzZo1U73eDg4OOH78OBISEgo9J6dOncL48ePRu3dvpKWlITw8XDXPqCyfSVKpFLdv38bOnTvh7u7+1uXipVIppk+fju+++w4+Pj4YMGAAZDIZdu7ciZycHMyaNavU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FiwAAFhbW8PIyEhrQREREREREekLjZOmrVu3okmTJli/fj1q1qypzZiIiIiIiIj0hsZzmh49egQfHx8mTEREREREVKVonDTVq1cPz54902YsREREREREekfjpGncuHHYtm0b7t69q814iIiIiIiI9IrGc5quXLkCc3NzDBw4EA0aNIBUKoVIJFLbh6vnERERERFRZaNx0nT+/HkAgK2tLbKyspCUlKS1oIiIiIiIiPSFxknTvn37IJVKtRkLERERERGR3tF4TtPgwYPx008/aTMWIiIiIiIivaNx0pSamsrlxomIiIiIqMrReHhe//79sXv3brRv3x5169bVZkxERERERFWKQpYNG5tqgtZHwtE4aRKLxfjnn3/g6emJevXqwdraGmKxekcVV88jIiIiIio9scQE95YbCVZfg6m5APIEq6+q0zhpunjxIqysrAAAOTk5ePjwodaCIiIiIiIi0hcaJ02nTp3SZhxERERERER6SeOkiYiIqLTMq5vCzFi4/2oyc2TIeJUlWH1ERESa0Ph/spEjR2q039atW8scDBERVS5mxhKIAw8KVp8itD8yBKuNiIhIMxonTYmJiYXKFAoFnj9/jpycHNjZ2aFRo0aCBkdERERERKRr5Z7TJJfLcfLkScyZMwdjx44VLDAiIiIiIiJ9oPHNbYtjYGCAXr164eOPP0ZoaKgQMREREREREemNcidNBRwcHHD79m2hqiMiIiIiItILgiRNubm5iIiIgLW1tRDVERERERER6Y1yr56Xm5uLe/fu4dWrV5gyZYpggREREREREemDcq2eB+TPaWrYsCH69esHf39/wQIjIiIiIiLSB+VePY+IiIiIiKgy0zhpCgoKgq+vL1q0aFHk9kuXLmHjxo1Yv369YMERERERVQbZsjzY2FQTrD55bhYMjEwFqUuWnYnnaXJB6iKqrDROmvbv348OHToUmzRFRUUhKipKsMCIiIiIKgsTiSEMfgkUrD756FDcHCUSpK4PtiiBtDRB6iKqrIpNmhISEtCvXz/k5uaqymbMmIEZM2YUW5mLi4uw0RERERERUakJ3btZ1RWbNNnb22Pu3LmIjo6GUqlEeHg43NzcYG9vX2hfsVgMqVQKPz8/rQZLRERERERvJ2Tvpnx0qCD1vMtKHJ43ZMgQDBkyBACQlJSEiRMnol27dhUSGBERERERkT7QeE7T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\n",
      "text/plain": [
       "<Figure size 1008x7056 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "create_summary_tear_sheet(factor_data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.7"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": true,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {
    "height": "calc(100% - 180px)",
    "left": "10px",
    "top": "150px",
    "width": "374.162px"
   },
   "toc_section_display": true,
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
